package com.jojo.android.zxlib.converter;


import com.alibaba.fastjson.JSONWriter;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.Charset;

import okhttp3.MediaType;
import okhttp3.RequestBody;
import okio.Buffer;
import retrofit2.Converter;

/**
 * 创建者 zx
 * 创建时间 2021/3/16 15:22
 * 转化RequestBody对象为T对象
 */
public class FastJsonRequestBodyConverter<T> implements Converter<T, RequestBody> {
    private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8");
    private static final Charset UTF_8 = Charset.forName("UTF-8");

    @Override
    public RequestBody convert(T value) throws IOException {
        Buffer buffer = new Buffer();
        Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8);
        JSONWriter jsonWriter = new JSONWriter(writer);
        jsonWriter.writeObject(value);
        jsonWriter.close();
        return RequestBody.create(MEDIA_TYPE, buffer.readByteArray());
    }
}
